Maven4OpenXava in GitHub: A project that automagically creates the Maven Artifacts. It also contains:
An OX application template ready to run
An archetype to create a blank application
Although OpenXava is built and configured to run with Ant build scripts it's possible to use maven to build web application portlets with Maven. The following configuration and sample Maven script was tested under OpenXava 4m2 release.
You will first need to download the recent maven 2 distribution. Then in your OpenXava workspace/MySchool project create a pom.xml file in the top level directory where build.xml is for the MySchool project and copy the following:
<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.openxava.school</groupId><artifactId>MySchool</artifactId><name>MySchool</name><packaging>war</packaging><version>1.0-SNAPSHOT</version><url>http://openxava.org</url><repositories><repository><id>ibiblio</id><name>Ibilbio</name><url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url></repository><repository><id>com.springsource.repository.bundles.release</id><name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases</name><url>http://repository.springsource.com/maven/bundles/release</url></repository><repository><id>com.springsource.repository.bundles.external</id><name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name><url>http://repository.springsource.com/maven/bundles/external</url></repository><repository><id>com.springsource.repository.bundles.milestone</id><name>SpringSource Enterprise Bundle Repository - External Bundle Milestones</name><url>http://repository.springsource.com/maven/bundles/milestone</url></repository><!-- required for some plugins that depend on snapshots :( --><repository><id>com.springsource.repository.bundles.snapshot</id><name>SpringSource Enterprise Bundle Repository - External Bundle Snapshots</name><url>http://repository.springsource.com/maven/bundles/snapshot</url></repository><repository><id>com.springsource.repository.bundles.external.snapshots</id><name>SpringSource Enterprise Bundle Repository - Third Party External Bundle Snapshots</name><url>http://private.repository.springsource.com.s3.amazonaws.com/maven/bundles/external</url></repository><repository><id>jboss-maven2</id><url>http://repository.jboss.com/maven2</url></repository></repositories><pluginRepositories><pluginRepository><id>com.springsource.repository.bundles.release</id><name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases</name><url>http://repository.springsource.com/maven/bundles/release</url></pluginRepository><pluginRepository><id>com.springsource.repository.bundles.external</id><name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name><url>http://repository.springsource.com/maven/bundles/external</url></pluginRepository><pluginRepository><id>com.springsource.repository.bundles.milestone</id><name>SpringSource Enterprise Bundle Repository - External Bundle Milestones</name><url>http://repository.springsource.com/maven/bundles/milestone</url></pluginRepository></pluginRepositories><dependencies><!-- General dependencies for standard applications --><dependency><groupId>org.testng</groupId><artifactId>testng</artifactId><version>5.1</version><classifier>jdk15</classifier><scope>test</scope></dependency><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.3</version><scope>provided</scope></dependency><dependency><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId><version>3.1</version><scope>provided</scope></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.4</version></dependency><dependency><groupId>net.sourceforge.cssparser</groupId><artifactId>cssparser</artifactId><version>0.9.5</version></dependency><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.9</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jsp-api</artifactId><version>2.0</version><scope>provided</scope></dependency><dependency><groupId>jta</groupId><artifactId>jta</artifactId><version>1.0.1b</version></dependency><dependency><groupId>nekohtml</groupId><artifactId>nekohtml</artifactId><version>1.9.6.2</version></dependency><dependency><groupId>portlet-api</groupId><artifactId>portlet-api</artifactId><version>1.0</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.4</version><scope>provided</scope></dependency><dependency><groupId>xalan</groupId><artifactId>xalan</artifactId><version>2.7.0</version></dependency><dependency><groupId>xerces</groupId><artifactId>xercesImpl</artifactId><version>2.8.1</version></dependency><!-- hibernate integration with JPA --><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-tools</artifactId><version>3.2.0.ga</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-entitymanager</artifactId><version>3.2.1.ga</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-annotations</artifactId><version>3.2.1.ga</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-commons-annotations</artifactId><version>3.0.0.ga</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>ejb3-persistence</artifactId><version>3.3.2.Beta1</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>3.0.0.ga</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate</artifactId><version>3.2.2.ga</version></dependency><dependency><groupId>asm</groupId><artifactId>asm</artifactId><version>1.5.3</version></dependency><dependency><groupId>poi</groupId><artifactId>poi</artifactId><version>2.5.1-final-20040804</version></dependency><dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId><version>3.2</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.1.2</version></dependency><dependency><groupId>commons-validator</groupId><artifactId>commons-validator</artifactId><version>1.3.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>1.4</version></dependency><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.2</version></dependency><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4</version></dependency><dependency><groupId>org.directwebremoting</groupId><artifactId>dwr</artifactId><version>2.0.3</version></dependency><dependency><groupId>jasperreports</groupId><artifactId>jasperreports</artifactId><version>3.5.3</version></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.0.3</version></dependency><dependency><groupId>oro</groupId><artifactId>oro</artifactId><version>2.0.8</version></dependency><dependency><groupId>dnsjava</groupId><artifactId>dnsjava</artifactId><version>2.0.1</version></dependency><dependency><groupId>jboss</groupId><artifactId>jboss-ejb-api</artifactId><version>4.2.0.GA</version></dependency><dependency><groupId>javax.ejb</groupId><artifactId>ejb-api</artifactId><version>3.0</version></dependency><dependency><groupId>javax.inject</groupId><artifactId>javax.inject</artifactId><version>1</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.7</version></dependency><dependency><groupId>net.sourceforge.htmlunit</groupId><artifactId>htmlunit</artifactId><version>2.7</version></dependency><dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>1.0.0.GA</version></dependency></dependencies><build><finalName>MySchool</finalName><sourceDirectory>${basedir}/src/</sourceDirectory><resources><resource><directory>persistence/</directory><filtering>true</filtering></resource><resource><directory>xava/</directory><filtering>true</filtering></resource><resource><directory>i18n/</directory><filtering>true</filtering></resource></resources><testResources><testResource><directory>src/</directory><filtering>true</filtering></testResource></testResources><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.0.2</version><configuration><source>1.6</source><target>1.6</target><encoding>ISO-8859-1</encoding></configuration></plugin><plugin><groupId>org.codehaus.mojo</groupId><artifactId>build-helper-maven-plugin</artifactId><executions><execution><phase>generate-resources</phase><goals><goal>add-resource</goal></goals><configuration><resources><resource><directory>${basedir}/../OpenXava/bin</directory></resource></resources></configuration></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-help-plugin</artifactId><version>2.1</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-clean-plugin</artifactId><version>2.2</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>2.2</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.4.3</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.0</version><configuration><webResources><resource><!-- this is relative to the pom.xml directory --><directory>web/</directory></resource></webResources></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.0.4</version><configuration><attach>true</attach></configuration><executions><execution><goals><goal>jar</goal></goals></execution></executions></plugin><!-- Other --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-install-plugin</artifactId><version>2.2</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><version>2.4</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-release-plugin</artifactId><version>2.0-beta-7</version></plugin><!-- IDE --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-eclipse-plugin</artifactId><!-- WARNING: Do not use 2.6 or above due to http://jira.codehaus.org/browse/MECLIPSE-538 --><version>2.5.1</version><configuration><downloadSources>true</downloadSources><downloadJavadocs>false</downloadJavadocs><wtpversion>2.0</wtpversion><additionalBuildcommands><buildCommand><name>org.eclipse.ajdt.core.ajbuilder</name><arguments><aspectPath>org.springframework.aspects</aspectPath></arguments></buildCommand><buildCommand><name>org.springframework.ide.eclipse.core.springbuilder</name></buildCommand></additionalBuildcommands><additionalProjectnatures><projectnature>org.eclipse.ajdt.ui.ajnature</projectnature><projectnature>org.springframework.ide.eclipse.core.springnature</projectnature></additionalProjectnatures></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-idea-plugin</artifactId><version>2.2</version><configuration><downloadSources>true</downloadSources><dependenciesAsLibraries>true</dependenciesAsLibraries></configuration></plugin><!-- Site --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-site-plugin</artifactId><version>2.0-beta-7</version></plugin><plugin><groupId>org.codehaus.mojo</groupId><artifactId>tomcat-maven-plugin</artifactId></plugin><plugin><groupId>org.mortbay.jetty</groupId><artifactId>maven-jetty-plugin</artifactId><version>6.1.10</version></plugin></plugins></build></project>
Then from your command prompt in this location type 'mvn clean install'. This wil create a "target" folder. Within this folder should be a MySchool.war file. Copy this into your tomcat/webapps/ folder, and start up tomcat. You should now see the MySchool web application running, successfully. This also assumes that for the the MySchool application you had followed the tutorial on setting up your jndi data source and database already.
Maven configuration
External projects for OpenXava/Maven integration:Although OpenXava is built and configured to run with Ant build scripts it's possible to use maven to build web application portlets with Maven. The following configuration and sample Maven script was tested under OpenXava 4m2 release.
You will first need to download the recent maven 2 distribution. Then in your OpenXava workspace/MySchool project create a pom.xml file in the top level directory where build.xml is for the MySchool project and copy the following:
Then from your command prompt in this location type 'mvn clean install'. This wil create a "target" folder. Within this folder should be a MySchool.war file. Copy this into your tomcat/webapps/ folder, and start up tomcat. You should now see the MySchool web application running, successfully. This also assumes that for the the MySchool application you had followed the tutorial on setting up your jndi data source and database already.